#include<bits/stdc++.h>
using namespace std;
#define all(x) (x).begin(),(x).end()
#define rall(x) (x).rbegin(),(x).rend()
const int N = 2e5 + 10;
#define INF 0x3f3f3f3f;
typedef long long int ll;
#define close(); std::ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);
//----------------------------------------------------------------------------//
// class Solution
// {
// public:

//     // int sum=0x3f3f3f;
//     // void dfs(string b,int pos,int cur,int st,int ans)//pos下标, cur是当前连续b的个数,st是花了多少步
//     // {
//     //     if(cur==ans)
//     //     {
//     //         sum=min(sum,st);
//     //     }
//     //     if(pos==b.size())
//     //     {
//     //         if(st>=ans) sum=min(st,sum);
//     //         return;
//     //     }
//     //     if(b[pos]=='B') dfs(b,pos+1,cur+1,st,ans);
//     //     else
//     //     {
//     //         dfs(b,pos+1,0,0,ans);
//     //         b[pos]='B';
//     //         dfs(b,pos+1,cur+1,st+1,ans);
//     //         b[pos]='W';
//     //     }

//     // }
//     int minimumRecolors(string blocks, int k)
//     {
//         // //string b=blocks;
//         // dfs(blocks,0,0,0,k);
//         // if(sum==0x3f3f3f3f) return -1;
//         // else return sum;


//         int l = 0, r = 0, cnt = 0;
//         while (r < k)
//         {
//             cnt += blocks[r] == 'W' ? 1 : 0;
//             r++;
//         }
//         int res = cnt;
//         while (r < blocks.size())
//         {
//             cnt += blocks[r] == 'W' ? 1 : 0;
//             cnt -= blocks[l] == 'W' ? 1 : 0;
//             res = min(res, cnt);
//             l++;
//             r++;
//         }
//         return res;
//     }

// };
int sum = 0x3f3f3f;
void dfs(string b, int pos, int cur, int st, int ans) //pos下标, cur是当前连续b的个数,st是花了多少步
{
    if(cur == ans)
    {
        sum = min(sum, st);
    }
    if(pos == b.size())
    {
        if(st >= ans) sum = min(st, sum);
        return;
    }
    if(b[pos] == 'B') dfs(b, pos + 1, cur + 1, st, ans);
    else
    {
        dfs(b, pos + 1, 0, 0, ans);
        b[pos] = 'B';
        dfs(b, pos + 1, cur + 1, st + 1, ans);
        b[pos] = 'W';
    }

}
int minimumRecolors(string blocks, int k)
{
    //string b=blocks;
    dfs(blocks, 0, 0, 0, k);
    if(sum == 0x3f3f3f3f) return -1;
    else return sum;
}
int main()
{
    string a = "BWWBWBBBWBBBWBBWWWBBBWBWBWBBBWWBWWWBWBBBWBBW";
    cout << minimumRecolors(a, 27) << '\n';
    return 0;
}
